home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 418_04 / abstree.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-02  |  4.5 KB  |  189 lines

  1. /* abstree.h
  2.  * RasMol2 Molecular Graphics
  3.  * Roger Sayle, February 1994
  4.  * Version 2.3
  5.  */
  6.  
  7. #define OpCode(x) (((x)->type)&0x0f)
  8.  
  9. /* Operator Types */
  10. #define OpAnd            0x01
  11. #define OpOr             0x02
  12. #define OpNot            0x03
  13. #define OpEqual          0x04
  14. #define OpNotEq          0x05
  15. #define OpLess           0x06
  16. #define OpMore           0x07
  17. #define OpLessEq         0x08
  18. #define OpMoreEq         0x09
  19. #define OpConst          0x0a
  20. #define OpWithin         0x0b
  21. #define OpMember         0xac
  22.  
  23. #define OpLftProp        0x10
  24. #define OpLftVal         0x20
  25. #define OpRgtProp        0x40
  26. #define OpRgtVal         0x80
  27.  
  28. /* Property fields */
  29. #define PropIdent        1
  30. #define PropXCord        2
  31. #define PropYCord        3
  32. #define PropZCord        4
  33. #define PropTemp         5
  34. #define PropRad          6
  35. #define PropResId        7
  36. #define PropName         8
  37. #define PropChain        9
  38. #define PropResName      10
  39. #define PropSelect       11
  40.  
  41. #define PredAbsOrd(x)    ((x)-20)
  42. #define PredAbsChr(x)    ((x)+20)
  43.  
  44. #define PredAlpha        20
  45. #define PredAmino        21
  46. #define PredAT           22
  47. #define PredBackbone     23
  48. #define PredBonded       24
  49. #define PredCG           25
  50. #define PredCystine      26
  51. #define PredDNA          27
  52. #define PredHelix        28
  53. #define PredHetero       29
  54. #define PredHydrogen     30
  55. #define PredIon          31
  56. #define PredLigand       32
  57. #define PredNucleic      33
  58. #define PredProtein      34
  59. #define PredPurine       35
  60. #define PredPyrimidine   36
  61. #define PredRNA          37
  62. #define PredSelected     38 /* Unused! */
  63. #define PredSheet        39
  64. #define PredSidechain    40
  65. #define PredSolvent      41
  66. #define PredTurn         42
  67. #define PredWater     43
  68.  
  69. #define PredAcidic       44
  70. #define PredAcyclic      45
  71. #define PredAliphatic    46
  72. #define PredAromatic     47
  73. #define PredBasic        48
  74. #define PredBuried       49
  75. #define PredCharged      50
  76. #define PredCyclic       51
  77. #define PredHydrophobic  52
  78. #define PredLarge        53
  79. #define PredMedium       54
  80. #define PredNeutral      55
  81. #define PredPolar        56
  82. #define PredSmall        57
  83. #define PredSurface      58
  84.  
  85.  
  86. #define MAXHANDLE   28
  87. #define HandAg       1
  88. #define HandAl       2
  89. #define HandAu       3
  90. #define HandB        4
  91. #define HandBr       5
  92. #define HandC        6
  93. #define HandCa       7
  94. #define HandCl       8
  95. #define HandCr       9
  96. #define HandCu      10
  97. #define HandF       11
  98. #define HandFe      12
  99. #define HandH       13
  100. #define HandHe      14
  101. #define HandI       15
  102. #define HandK       16
  103. #define HandLi      17
  104. #define HandMg      18
  105. #define HandMn      19
  106. #define HandN       20
  107. #define HandNa      21
  108. #define HandNi      22
  109. #define HandO       23
  110. #define HandP       24
  111. #define HandS       25
  112. #define HandSi      26
  113. #define HandZn      27
  114.  
  115.  
  116. #define SetSize     10
  117. typedef struct _AtomSet {
  118.     struct _AtomSet __far *next;
  119.     Atom __far *data[SetSize];
  120.         int count;
  121.         } AtomSet;
  122.         
  123. typedef union {
  124.     AtomSet __far *set;
  125.     struct _Expr *ptr;
  126.         Long limit;
  127.     int val;
  128.     } Branch;
  129.  
  130. typedef struct _Expr {
  131.     int type;
  132.         Branch rgt;
  133.         Branch lft;
  134.     } Expr;
  135.  
  136.  
  137. #ifdef ABSTREE
  138. int VanWaalRadius[MAXHANDLE] = { 360, /* Unknown */
  139.      318, /*Ag*/  425, /*Al*/  342, /*Au*/  250, /* B*/
  140.      488, /*Br*/  468, /* C*/  425, /*Ca*/  450, /*Cl*/
  141.      342, /*Cr*/  180, /*Cu*/  350, /* F*/  425, /*Fe*/
  142.      250, /* H*/  300, /*He*/  538, /* I*/  360, /* K*/
  143.      465, /*Li*/  218, /*Mg*/  342, /*Mn*/  375, /* N*/
  144.      280, /*Na*/  172, /*Ni*/  350, /* O*/  425, /* P*/
  145.      462, /* S*/  482, /*Si*/  185  /*Zn*/ };
  146.  
  147. Expr *QueryExpr;
  148. Chain __far *QChain;
  149. Group __far *QGroup;
  150. Atom __far *QAtom;
  151.  
  152. #else
  153. extern int VanWaalRadius[MAXHANDLE];
  154.  
  155. extern Expr *QueryExpr;
  156. extern Chain __far *QChain;
  157. extern Group __far *QGroup;
  158. extern Atom __far *QAtom;
  159.  
  160. #ifdef __STDC__
  161. Expr *AllocateNode();
  162. void DeAllocateExpr( Expr* );
  163. int GetElemIdent( Atom __far* );
  164. int EvaluateExpr( Expr* );
  165. int DefineSetExpr( char*, Expr* );
  166. Expr *LookUpSetExpr( char* );
  167. AtomSet __far *BuildAtomSet( Expr* );
  168. void DeleteAtomSet( AtomSet __far* );
  169. int ParsePrimitiveExpr( char** );
  170. void InitialiseAbstree();
  171. void ResetSymbolTable();
  172.  
  173. #else /* non-ANSI C compiler */
  174. Expr *AllocateNode();
  175. void DeAllocateExpr();
  176. int GetElemIdent();
  177. int EvaluateExpr();
  178. int DefineSetExpr();
  179. Expr *LookUpSetExpr();
  180. AtomSet __far *BuildAtomSet();
  181. void DeleteAtomSet();
  182. int ParsePrimitiveExpr();
  183. void InitialiseAbstree();
  184. void ResetSymbolTable();
  185.  
  186. #endif
  187. #endif
  188.  
  189.